<?php

require_once("../../util/conexao.php");
$conexao = Conexao::conectar();

require_once("../../util/util.php");
require_once("regras/negocio/veiculoVendaNegocio.php");
require_once("regras/negocio/veiculoNegocio.php");
require_once("regras/negocio/especieNegocio.php");
require_once("regras/negocio/corNegocio.php");
require_once("regras/negocio/marcaNegocio.php");
require_once("regras/negocio/financeiraNegocio.php");
require_once("regras/negocio/modeloNegocio.php");

$objNegocio = new VeiculoVendaNegocio();

if (isset($_GET["txtplaca"]) && !empty($_GET["txtplaca"]) && $acao == "COMPRAR") {
    $arrayDados["placa"] = trim($_GET["txtplaca"]);
    $dadosVeiculo = $objNegocio->retornaVeiculos($conexao, $arrayDados);

    if (empty($dadosVeiculo)) {
        $class = "erro";
        $mensagem = "Veiculo não cadastrado ou vendido.";
    }
} else if ($acao == "COMPRAR") {
    if ($_POST) {
        try {
            if (empty($_POST["hdCodigoVeiculo"]))
                throw new Exception("CVI");
            if (empty($_POST["ddlCliente"]))
                throw new Exception("ICI");
            if (empty($_POST["ddlVendedor"]))
                throw new Exception("SVI");

            $dadosVenda = array();

            $dadosVenda["idVeiculo"] = $_POST["hdCodigoVeiculo"];
            $dadosVenda["idCliente"] = $_POST["ddlCliente"];
            $dadosVenda["idVendedor"] = $_POST["ddlVendedor"];

            if (isset($_POST["ddlFinanceira"])) {
                $dadosVenda["idFinanceira"] = $_POST["ddlFinanceira"];
            } else {
                $dadosVenda["idFinanceira"] = 0;
            }

            $dadosVenda["idCorretor"] = $_POST["ddlCorretor"];
            $dadosVenda["idAvalista"] = $_POST["ddlAvalista"];

            $dadosVenda["formaPagamento"] = $_POST["ddltipo"];
            $dadosVenda["valorVenda"] = Util::moedaBd($_POST["txtvalorvenda"]);
            $dadosVenda["entrada"] = Util::moedaBd($_POST["txtentrada"]);

            ($dadosVenda["entrada"] > 0) ? $parcelas = $_POST["txtparcelas"] + 1 : $parcelas = $_POST["txtparcelas"];

            (empty($_POST["txtjuros"])) ? $juros = 0 : $juros = $_POST["txtjuros"];
            $dadosVenda["juros"] = $juros;

            $dadosVenda["parcelas"] = $parcelas;
            $dadosVenda["dataPParcela"] = Util::dataBd($_POST["txtdataprimeiraparcela"]);
            $dadosVenda["valorCorretagem"] = Util::moedaBd($_POST["txtvalorcorretagem"]);
            $dadosVenda["valorFinanciado"] = Util::moedaBd($_POST["txtvalorfinanciado"]);

            (empty($_POST["txtmulta"])) ? $multa = 0 : $multa = $_POST["txtmulta"];
            $dadosVenda["multa"] = $multa;

            $dadosVenda["valorParcela"] = Util::moedaBd($_POST["txtvalorparcela"]);

            (empty($_POST["txtvalordesconto"])) ? $valordesconto = 0.00 : $valordesconto = Util::moedaBd($_POST["txtvalordesconto"]);
            $dadosVenda["descontoTitulo"] = $valordesconto;

            $dadosVenda["valorFinal"] = Util::moedaBd($_POST["txtvalorfinal"]);
            $dadosVenda["tituloEntrada"] = 0;

            Util::begin();
            $idMovimento = $objNegocio->venderVeiculo($conexao, $dadosVenda);
            if (isset($_SESSION["titulos"]))
                unset($_SESSION["titulos"]);
            $_SESSION["titulos"] = $objNegocio->retornaTitulosMovimento($conexao, $idMovimento);
            Util::commit();

            echo "<script>window.location='veiculo-venda-titulos.php'</script>";
            //$class = "sucesso";
            //$mensagem = "Venda realizada com sucesso";
        } catch (Exception $ex) {
            Util::rollback();

            switch ($ex->getMessage()) {
                case 'PTCM':
                    $class = "erro";
                    $mensagem = "Problema ao tentar cadastrar movimento";
                    break;
                case 'PTCTE':
                    $class = "erro";
                    $mensagem = "Problema ao tentar cadastrar titulo de entrada";
                    break;
                case 'PTCT':
                    $class = "erro";
                    $mensagem = "Problema ao tentar cadastrar titulo";
                    break;
                case 'PTRVE':
                    $class = "erro";
                    $mensagem = "Problema ao tentar remover veículo do estoque";
                    break;
                case 'PTCMC':
                    $class = "erro";
                    $mensagem = "Problema ao tentar cadastrar movimento de corretagem";
                    break;
                case 'PTCTC':
                    $class = "erro";
                    $mensagem = "Problema ao tentar cadastrar titulo da corretagem";
                    break;
                case 'CVI':
                    $class = "erro";
                    $mensagem = "Código do veículo inválido";
                    break;
                case 'ICI':
                    $class = "erro";
                    $mensagem = "Você deve selecionar um cliente";
                    break;
                case 'SVI':
                    $class = "erro";
                    $mensagem = "Selecione um vendedor";
                    break;
            }
        }
    }
} elseif ($acao == "VEICULO-TITULOS") {

    $atualizado = 0;

    if ($_POST) {
        $somaTitulos = 0;
        for ($i = 0; $i < count($_SESSION["titulos"]); $i++) {
            $somaTitulos += Util::moedaBd($_POST["valor_" . $i]);
        }

        if (strcmp(Util::dbMoeda($_POST["valorTotal"], false), Util::dbMoeda($somaTitulos, false)) == 0) {

            $titulos = array();
            for ($i = 0; $i < count($_SESSION["titulos"]); $i++) {

                $titulos[$i]["id"] = $_POST["codigo_" . $i];
                $titulos[$i]["data"] = Util::dataBd($_POST["data_" . $i]);
                $titulos[$i]["valor"] = Util::moedaBd($_POST["valor_" . $i]);
            }

            Util::begin();
            if ($objNegocio->atualizarTitulos($titulos, $conexao)) {
                Util::commit();
                $class = "sucesso";
                $mensagem = "Títulos atualizados com sucesso.";
                $atualizado = 1;
                unset($_SESSION["titulos"]);
            } else {
                Util::rollback();
                $class = "erro";
                $mensagem = "Problemas ao tentar atualizar títulos.";
            }
        } elseif (strcmp(Util::dbMoeda($_POST["valorTotal"], false), Util::dbMoeda($somaTitulos, false)) > 0) {
            $class = "erro";
            $mensagem = "O soma dos títulos (<strong>" . Util::dbMoeda($somaTitulos) . "</strong>) é menor que o total da venda (<strong>" . Util::dbMoeda($_POST["valorTotal"]) . "</strong>).";
        } else {
            $class = "erro";
            $mensagem = "O soma dos títulos (<strong>" . Util::dbMoeda($somaTitulos) . "</strong>) é maior que o total da venda (<strong>" . Util::dbMoeda($_POST["valorTotal"]) . "</strong>).";
        }
    }
}

$vendedores = $objNegocio->retornaVendedores($conexao);
$avalistas = $objNegocio->retornaAvalistas($conexao);
$clientes = $objNegocio->retornaClientes($conexao);
$corretores = $objNegocio->retornaCorretores($conexao);

$objEspecieNegocio = new EspecieNegocio();
$especieTipo = $objEspecieNegocio->retornaEspecies();

$objCor = new CorNegocio();
$cores = $objCor->retornaCores();

$objMarca = new MarcaNegocio();
$marcas = $objMarca->retornaMarcas();

$objFinanceira = new FinanceiraNegocio();
$financeiras = $objFinanceira->retornaFinanceiras();

$objModelo = new ModeloNegocio();

if (!isset($_GET["txtplaca"]) && $acao == "COMPRAR") {
    $modelos = $objModelo->retornaModelos();
} else {
    if (isset($dadosVeiculo[0]["marca"]))
        $modelos = $objModelo->retornaModelosPorMarca($dadosVeiculo[0]["marca"]);
}
?>